/**
* 删除左右两端的空格
*/
String.prototype.trim=function()
{
     return this.replace(/(^\s*)|(\s*$)/g, "");
}
/**
* 删除左边的空格
*/
String.prototype.ltrim=function()
{
     return this.replace(/(^\s*)/g,"");
}
/**
* 删除右边的空格
*/
String.prototype.rtrim=function()
{
     return this.replace(/(\s*$)/g,"");
}
/**
* frmObj 验证成功后要执行提交的FormObj
*validteObj  要验证的模块内容 如果为空，则代表验证当前页面上的元素
*/
function frmSubmit(frmObj,validteObj){
     if(validityPage(validteObj)){
       var allHtml = (typeof frmObj=="object")?frmObj.getElementsByTagName("*"):document.getElementsByTagName("*");
       var len = allHtml.length;
       for(var i=0;i<len;i++){
           if(allHtml[i].disabled){
               allHtml[i].disabled=false;
           }
       }
        return true;
       //frmObj.submit();
     }else{
         return false;
     }
}
/**
* JavaScript验证表单
*
* @要求: 所要验证的页面元素中必须加入一个validate属性
* @格式: 元素域名称||验证类型1,验证类型2,.....
* @验证类型:
            1.非空: notnull
            2.数字: number
            3.整数: integer
            4.日期: date
            5.身份证:IDCard
            6.邮件:email
            7.验证最大长度:minLength      【说明】页面元素需要添加minLength属性
            8.验证最大长度:maxLength      【说明】页面元素需要添加maxLength属性
            8.最小数:minnumber      【说明】页面元素需要添加minnumber属性
            8.最大数:maxnumber      【说明】页面元素需要添加maxnumber属性
            3.0~100整数: integer100
            4.大于0的整数: integer_0_n
            5.大于1的整数: integer_1_n
            6.double型: double
            7.字符串(包括汉字): string
            8.数字比较大小：compareBig
* @return 出错返回false, 否则返回true
 页面内容示例:
//**************************************
 <input type="text" name="fullName" validate="企业名称||notnull,number" value="" />
//**************************************
*/
function validityPage(obj){
    //todo: 剔除Grid中的元素
    var allHtml = (typeof obj=="object")?obj.getElementsByTagName("*"):document.getElementsByTagName("*");
    var len = allHtml.length;
    var result = true;
    for (var i = 0; i < len; i++) {
        var validate=allHtml[i].getAttribute("validate");
        if (validate && validate!=null) {
            var eName = allHtml[i].name;
            var strArray = (validate).split("||");
            if(strArray == "") {   //validity=""
                continue;
            }
            var vArray = strArray[1].split(",");
            var _message = strArray[0];
            for (var j = 0; j < vArray.length; j++) {
                var _validateType = vArray[j].toLowerCase();
                if (_validateType == "notnull" || _validateType == "required") {
                    if (!checkValidate(eName, "required", _message + "不能为空!"))result = false;
                } else if (_validateType == "number") {
                    if (!checkValidate(eName, "number", _message + "必须为数字型!"))result = false;
                } else if(_validateType == "zipnumber"){
                    if (!checkValidate(eName, "zipnumber", _message + "必须为正确的编码格式(例:230000)!"))result = false;
                } else if (_validateType == "integer") {
                    if (!checkValidate(eName, "integer", _message + "必须为整数型!"))result = false;
                } else if (_validateType == "double") {
                    if (!checkValidate(eName, "double", _message + "必须为双精度型!"))result = false;
                } else if (_validateType == "string") {
                    if (!checkValidate(eName, "string", _message + "必须为字符串!"))result = false;
                } else if (_validateType == "date") {
                    if (!checkValidate(eName, "date", _message + "必须为日期!"))result = false;
                } else if (_validateType == "idcard") {
                    if (!checkValidate(eName, "idcard", _message + "必须为正确的身份证号!"))result = false;
                } else if (_validateType == "email") {
                    if (!checkValidate(eName, "email", _message + "必须为正确的邮件格式!"))result = false;
                } else if (_validateType == "minlength") {
                     var _minLength = allHtml[i].getAttribute("minLength");
                    if (!checkValidate(eName, "minlength", _message + "长度必须大于等于" + _minLength + "!", _minLength))result = false;
                } else if (_validateType == "maxlength") {
                     var _maxLength = allHtml[i].getAttribute("maxLength");
                    if (!checkValidate(eName, "maxlength", _message + "长度必须小于等于" + _maxLength + "!", _maxLength))result = false;
                } else if (_validateType == "integer100") {
                    if (!checkValidate(eName, "integer100", _message + "必须为0到100整数!"))result = false;
                } else if (_validateType == "integer_0_n") {
                    if (!checkValidate(eName, "integer_0_n", _message + "必须为大于0整数!"))result = false;
                } else if (_validateType == "integer_1_n") {
                    if (!checkValidate(eName, "integer_1_n", _message + "必须为大于1的整数!"))result = false;
                } else if(_validateType == "integer_0_n_i"){
                	if (!checkValidate(eName, "integer_0_n_i", _message + "必须为大于0的整数!"))result = false;
                } else if(_validateType == "integer_0_n_haszero"){
                	if (!checkValidate(eName, "integer_0_n_haszero", _message + "必须为大于等于0的整数!"))result = false;
                } else if(_validateType == "minnumber"){
                    var _minnumber=allHtml[i].getAttribute("minnumber");
                    var _unit=allHtml[i].getAttribute("unit");
                    if(!_unit)_unit="";
                    if (!checkValidate(eName, "minnumber", _message + "必须为大于等于"+_minnumber+_unit+"!",_minnumber))result = false;
                } else if(_validateType == "maxnumber"){
                    var _maxnumberr=allHtml[i].getAttribute("maxnumber");
                    var _unit=allHtml[i].getAttribute("unit");
                    if(!_unit)_unit="";
                    if (!checkValidate(eName, "maxnumber", _message + "必须为大于等于"+_maxnumberr+_unit+"!",_maxnumberr))result = false;
                }
                if(!result){
                    allHtml[i].click();
                    allHtml[i].focus();
                    return result;
                }
            }
        }
    }
    return result;
}


/*
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                          页面验证                                ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
*/
/**
* JavaScript验证表单
*
* @param fieldName 验证的控件名称
* @param validateType  目前只支持非空,数字
        验证类型:
            1.非空: requiredString
            2.数字: number
            3.整数: integer
            4.日期: date
            5.身份证:IDCard
            6.邮件:email
            7.验证最大长度:minLength      【说明】需要传三个参数,第三个参数为判断的长度(整数) checkValidate("...","...",2)
            8.验证最大长度:maxLength      【说明】需要传三个参数,第三个参数为判断的长度(整数) checkValidate("...","...",6)
            3.0~100整数: integer100
            4.大于0的整数: integer_0_n
            5.大于1的整数: integer_1_n
            6.double型: double
            7.字符串(包括汉字): string
            8.数字比较大小：compareBig
            9.数字比较大小(包含等于):comparebigorequal
            10.大于0的整数(不允许有小数): integer_0_n_i
* @param message  错误消息
* @return 出错返回false, 否则返回true
 页面内容示例:
//**************************************
 在页面中为提交按钮添加以下方法:
 function doSubmit() {
        var hasError = false;
    if (!checkValidate("code", "requiredString", "商品编号不能为空!")) {
        hasError = true;
    }
    if (!checkValidate("approveWrit.medicineTypeBigCategory.currencyName", "required", "通用名不能为空!")) {
        hasError = true;
    }
    //alert(!document.all("approveNo").isDisabled);
    if (!document.all("approveNo").isDisabled&&!checkValidate("approveNo", "required", "批准文号不能为空!")) {
        hasError = true;
    }else{
        removeValidateField("approveNo");
    }
    if (!checkValidate("formalName", "required", "商品名称不能为空!")) {
        hasError = true;
    }
    if(hasError) {
        return false;
    }
    return true;
 }
//**************************************
*/
function checkValidate(fieldName, validateType, message,param2,frameflag) {      
    var errorField = document.getElementsByName(fieldName)[0];
    if(typeof(fieldName)=='object'){
        errorField = fieldName;
    }else{
        errorField = document.getElementsByName(fieldName)[0];
    }
    var _param2 = document.getElementsByName(param2)[0];

    //~ 进行验证,通过则返回true //////////////////////////////////////////////////////////
    if (errorField != "undefined" && errorField != null && errorField != "") {
        if (validateType.toLowerCase() == "required") {           //验证非空
            if (errorField.value != "") {
                return true;
            }
        }else if( (validateType.toLowerCase() == "zipnumber")){
            //验证是否是正确的邮编码
            if (errorField.value == "") {
                return true;
            }
            if (checkZip(errorField.value)) {
                return true;
            }
        }else if (validateType.toLowerCase() == "number") {        //验证数字
            //~ 确保只验证数字，所以在此如果其值为空则退出。这样即可解决多次验证的问题
            if (errorField.value == "") {
                return true;
            }
            if (checkNumber(errorField.value)) {
                return true;
            }
        }  else if (validateType.toLowerCase() == "integer") {//整数
            if (errorField.value == "") {
                return true;
            }
            if (checkInteger(errorField.value) ) {
                return true;
            }
        }  else if (validateType.toLowerCase() == "integer_0_n_i") {        //整数（大于0的整数）
            if (errorField.value == "") {
                return true;
            }
            if (checkInteger(errorField.value) && errorField.value>0) {
                return true;
            }
        }  else if (validateType.toLowerCase() == "integer100") {        //0~100整数
            if (errorField.value == "") {
                return true;
            }
            if (checkNumber(errorField.value) && errorField.value>=0 && errorField.value <=100 ) {
                return true;
            }
        } else if (validateType.toLowerCase() == "integer_0_n") {        //大于0的整数
            if (errorField.value == "") {
                return true;
            }
            if (checkNumber(errorField.value) && errorField.value>0) {
                return true;
            }
        } else if (validateType.toLowerCase() == "integer_0_n_haszero") {        //大于等于0的整数
            if (errorField.value == "") {
                return true;
            }
            if (checkInteger(errorField.value) && errorField.value >= 0) {
                return true;
            }
        } else if (validateType.toLowerCase() == "integer_1_n") {        //大于1的整数
            if (errorField.value == "") {
                return true;
            }
            if (checkNumber(errorField.value) && errorField.value>=1) {
                return true;
            }
        }else if(validateType.toLowerCase() == "integer_1_100"){ //1到100数字 add by wangjuan
        	if (errorField.value == "") {
                return true;
            }
            if (checkNumber(errorField.value) && errorField.value>=1 && errorField.value <=100 ) {
                return true;
            }
        }else if (validateType.toLowerCase() == "comparebig") {        //比较两个数据的大小
            if (errorField.value == "") {
                return true;
            }
            if (Number(errorField.value) >= Number(_param2.value)) {
                return true;
            }
        } else if (validateType.toLowerCase() == "comparebigorequal") {        //比较两个数据的大小(>=)
            if (errorField.value == "") {
                return true;
            }
            if (Number(errorField.value) >= Number(_param2.value)) {
                return true;
            }
        } else if (validateType.toLowerCase() == "comparesmall") {        //比较两个数据的大小
            if (errorField.value == "") {
                return true;
            }
            if (Number(errorField.value) < Number(_param2.value)) {
                return true;
            }
        } else if (validateType.toLowerCase() == "date" || validateType.toLowerCase() == "dateymdhm" || validateType.toLowerCase() == "dateymdhms"|| validateType.toLowerCase() == "dateymd" || validateType.toLowerCase() == "dateym") {        //验证日期
            if (errorField.value == "") {
                return true;
            }
            if (checkDate(errorField.value,validateType.toLowerCase())) {
                return true;
            }
        } else if (validateType.toLowerCase() == "email") {        //验证邮件
            if (errorField.value == "") {
                return true;
            }
            if (checkEmail(errorField.value)) {
                return true;
            }
        } else if (validateType.toLowerCase() == "idcard") {        //验证身份证
            if (errorField.value == "") {
                return true;
            }
            if (checkIDCard(errorField.value)) {
                return true;
            }
        } else if (validateType.toLowerCase() == "minlength") {        //判断最小长度
            if (errorField.value == "") {
                return true;
            }
            if (Number((errorField.value).length) >= Number(param2)) {
                return true;
            }
        } else if (validateType.toLowerCase() == "maxlength") {        //判断最大长度
            if (errorField.value == "") {
                return true;
            }
            if (Number((errorField.value).length) <= Number(param2)) {
                return true;
            }
        }else if (validateType.toLowerCase() == "minnumber") {        //判断最小值
            if (errorField.value == "") {
                return true;
            }

            if (Number((errorField.value)) >= Number(param2)) {
                return true;
            }
        }else if (validateType.toLowerCase() == "maxnumber") {        //判断最大值
            if (errorField.value == "") {
                return true;
            }

            if (Number((errorField.value)) <= Number(param2)) {
                return true;
            }
        } else {
            if (errorField.value != "") {
                return true;
            }
        }
        //todo: 增加更多验证类型
    } else {
        alert("来自checkValidate的错误信息\n" + fieldName + "不存在");
        return false;
    }
   alert(message);
   return false;
}

function checkZip(str){
    var reg = /^[0-9]\d{5}$/;
    if(arr = str.match(reg)){
        return true;
    }else{
        return false;
    }
}

// 输入串是否全是数字(包括1.22或者.00此类) 
function checkNumber(str){
    if (typeof(str) != "undefined"){
    var reg = /^\d+$/;
    var reg2 = /^[-\+]?\d*(\.\d+)?$/;
    if ((arr = str.match(reg))||(arr = str.match(reg2))){
        return true;
    }else
    {
        //alert("输入串为空或不全是数字");
        return false;
    }
  }
    return true;
}
// 输入串是否是整数 
function checkInteger(str){
    var reg = /^[-\+]?\d+$/;
    if (arr = str.match(reg)){
        return true;
    }
    else{
        //alert("输入串为空或不全是数字");
        return false;
    }
}
/**
*@输入串是否是有效的浮点数
**/
function checkFloat(str)
{
   	var reg = /^-?\d*(\.)?\d+$/;
   	if(arr=str.match(reg))
   	{
      		return true;
   	}
   	else
   	{
      		return false;
   	}
}

/**
*@ 输入串是否全是整数
**/
function checkIntegerDate(str)
{
	var reg = /^[0-9]*[0-9][0-9]*$/;
   	if(arr=str.match(reg))
   	{
		if(str.indexOf("0")==0){
			if(str.length==1)
				return true;
			else{
				alert("整数不能以0开头");
				return false;
			}
		}
   	}
   	else
   	{
        alert("输入串为空或不全是数字");
        return false;
   	}
   	return true;
}
// 输入串是否是正整数 大于0
function checkPositiveInteger(str) {
    var reg = /^[0-9]*[1-9][0-9]*$/;
    if (arr = str.match(reg)) {
        if (!(str.indexOf("0") == 0)) {
            return true;
        } else
        {
            alert("输入串不能以零开头！");
            return false;
        }
    }
    else
    {
        alert("输入串不是正整数");
        return false;
    }
}
// 日期格式 YYYY-MM-DD 
function checkDate(str,formatDate){
    var reg = /^(\d{4})(-)((0?[1-9])|(1[0-2]))(-)((0?[1-9])|((1|2)[0-9])|(3(0|1)))$/;
    if(formatDate!=null){
       if(formatDate=="dateymdhm"){
           reg =/^(\d{4})(-)((0[1-9])|(1[0-2]))(-)((0[1-9])|((1|2)[0-9])|(3(0|1)))\s+\d{2}:\d{2}$/;
       }else if(formatDate=="dateymdhms"){
           reg = /^(\d{4})(-)((0[1-9])|(1[0-2]))(-)((0[1-9])|((1|2)[0-9])|(3(0|1)))\s+\d{2}:\d{2}:\d{2}$/;
       }else if(formatDate=="dateymd"){
           reg = /^(\d{4})(-)((0?[1-9])|(1[0-2]))(-)((0?[1-9])|((1|2)[0-9])|(3(0|1)))$/;
       }else if(formatDate=="dateym"){
           reg = /^(\d{4})(-)((0[1-9])|(1[0-2]))$/;
       }
    }
    if (arr = str.match(reg)){
        return true;
    }
    else{
        return false;
    }
}
// 汉字 
function checkChineseCharacters(str){
    //var reg = /\u4e00-\u9fa5/;
    var reg = /^[\u0391-\uFFE5]+$/;
    if (arr = str.match(reg)){
        return true;
    }
    else{
        return false;
    }
}
/**
*字符串中如有一个汉字就返回TRUE
*/
function checkChineseCharByChar(str){
    var len=str.length;
    for(var i=0;i<len;i++){
      var ch=str.charAt(i);
      if(checkChineseCharacters(ch)){
         return true;
      }
    }
    return false;
}
// 邮件 
function checkEmail(str){
    var reg = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
    if (arr = str.match(reg)){
        return true;
    }
    else{
        return false;
    }
}
// 中国身份证(15或18位) 
// 有问题! 
function checkIDCard(str){
    var reg = /\d{15}|\d{18}/;
    if (arr = str.match(reg)){
        return true;
    }
    else{
        return false;
    }
}